correct garmin real time altitude, add geoid height. (#1303)
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Tue, 23 Jul 2024 20:57:25 +0000 (14:57 -0600)
committerGitHub <noreply@github.com>
Tue, 23 Jul 2024 20:57:25 +0000 (14:57 -0600)
garmin.cc

index ca642c3e7d1facfa9ba7b3e1d22457af74b23ecc..d676e33df6af80de512421574fa4873516ddccdf 100644 (file)
--- a/garmin.cc
+++ b/garmin.cc
@@ -579,7 +579,13 @@ GarminFormat::route_read()
 void
 GarminFormat::pvt2wpt(GPS_PPvt_Data pvt, Waypoint* wpt)
 {
-  wpt->altitude = pvt->alt;
+  // pvt->alt is height (in meters) above the WGS84 elipsoid.
+  // pvt->msl_hght is height (in meters) of WGS84 elipsoid above MSL.
+  // wpt->altitude is height (in meters) above geoid (mean sea level).
+  // wpt->geoidheight is "Height (in meters) of geoid (mean sea level) above WGS84 earth ellipsoid."
+  wpt->set_geoidheight(-pvt->msl_hght);
+  wpt->altitude = pvt->alt + pvt->msl_hght;
+
   wpt->latitude = pvt->lat;
   wpt->longitude = pvt->lon;